package com.chapter12.demo1;

/**
 * 12.3 函数式接口
 */
public class test2 {
    //为了保持代码的灵活性，经常会在方法中使用接口类型的参数，
    // 方法的调用者负责传入实现了该接口的对象，在方法内部利用该对象完成功能实现
    public static int operate(int a,int b , MathOperation math){
        return math.operation(a,b);
    }

    public static void main(String[] args) {
        //使用匿名内部类调用
       int c =  operate(1, 2, new MathOperation() {
            @Override
            public int operation(int a, int b) {
                return a+b;
            }
        });
        System.out.println(c);

        //使用Lambda 表达式调用
        System.out.println(operate(5,3 ,(a,b)->a+b));
        System.out.println(operate(5,3 ,(a,b)->a-b));

    }
}
